#ifndef __ANO_PID_H
#define __ANO_PID_H
#include "Ano_FcData.h"
/*=====================================================================================================================
						 *****
=====================================================================================================================*/
typedef struct  //“参数配置”结构体，用于设置 PID 的增益等静态参数
{
	u8 fb_d_mode;
	float kp;			 //比例系数
	float ki;			 //积分系数
	float kd_ex;		 	 //微分系数
	float kd_fb; //previous_d 微分先行
//	float inc_hz;  //不完全微分低通系数
//	float k_inc_d_norm; //Incomplete 不完全微分 归一（0,1）
	float k_ff;		 //前馈 

}_PID_arg_st;




typedef struct
{
    float err;             // 当前误差 = 设定值(setpoint) - 反馈值(feedback)
    
    float exp_old;         // 期望值
    float feedback_old;    // 上一次的反馈值（feedback）

    float fb_d;            // 反馈值的一阶导数（速度），可用于微分项计算
    float fb_d_ex;         // 扩展反馈导数（可能用于二阶微分或平滑处理）
    float exp_d;           // 设定值的变化率（设定值的导数）
	//	float err_d_lpf;

    float err_i;           // 积分项累积值（Integral term）
    float ff;              // 前馈项（Feedforward）
    float pre_d;           // 预处理的微分项（可能用于滤波或辅助计算）

    float out;             // 最终输出值（经过P+I+D+FF后的控制量）

} _PID_val_st;////“运行数据”结构体，用于保存 PID 运行时的动态状态



float PID_calculate( float T,            //周期
										float in_ff,				//前馈
										float expect,				//期望值（设定值）
										float feedback,			//反馈值
										_PID_arg_st *pid_arg, //PID参数结构体
										_PID_val_st *pid_val,	//PID数据结构体
										float inte_d_lim,
										float inte_lim			//integration limit，积分限幅
										   );			//输出


										
#endif

